#define _CRT_SECURE_NO_WARNINGS
//#include"heap.h"
#include<stdio.h>
#include<string.h>
#include<stdlib.h>


//void test()
//{
//	int arr[] = { 15,18,28,34,65,19,49,25,37,27 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	hp h;
//	hpinit(&h, arr, sz);
//	hppush(&h, 100);
//	hppop(&h);
//	hpprint(&h);
//}
//
//int main()
//{
//	test();
//	return 0;
//}

//void myswap(int* val1, int* val2)
//{
//    int temp = *val1;
//    *val1 = *val2;
//    *val2 = temp;
//}
//
//void adjustdown(int* newarr, int sz, int p)
//{
//    int child = 2 * p + 1;
//    while (child < sz)
//    {
//        if (child + 1 < sz && newarr[child + 1] > newarr[child])
//        {
//            child++;
//        }
//        else
//        {
//            if (newarr[child] > newarr[p])
//            {
//                swap(&newarr[child], &newarr[p]);
//                p = child;
//                child = 2 * p + 1;
//            }
//            else
//                break;
//        }
//    }
//}
//
//
//void test()
//{
//
//    int arr[] = { 0,1,1,2,4,4,1,3,3,2 };
//    int arrSize = sizeof(arr) / sizeof(arr[0]);
//    int k = 1;
//
//    int* newarr = malloc(sizeof(int) * k);
//    for (int i = 0; i < k; i++)
//    {
//        newarr[i] = arr[i];
//    }
//
//    for (int i = (k - 2) / 2; i >= 0; i--)
//    {
//        adjustdown(newarr, k, 0);
//
//    }
//
//    while (k < arrSize)
//    {
//        if (newarr[0] > arr[k])
//        {
//            myswap(&newarr[0], &arr[k]);
//            adjustdown(newarr, k, 0);
//        }
//       
//        k++;
//    }
//
//    
//    for (int i = 0; i < 1; i++)
//    {
//        printf("%d ", newarr[i]);
//    }
//
//}
//
//
//int main()
//{
//    test();
//    return 0;
//}

typedef struct btnode
{
	struct btnode* left;
	struct btnode* right;
	char val;
}btnode;

btnode* createnode(char data)
{
	btnode* bt = malloc(sizeof(btnode));
	bt->left = NULL;
	bt->right = NULL;
	bt->val = data;
}

btnode* find(char val, btnode* root)
{
	if (!root)
		return NULL;

	if (root->val == val)
		return root;


	btnode* lret = find(val, root->left);
	if (lret)
		return lret;
	 


	btnode* rret = find(val, root->left);
	if (rret)
		return rret;

	return NULL;
	
	
	
}

void test()
{
	btnode* A = createnode('A');
	btnode* B = createnode('B');
	btnode* C = createnode('C');
	btnode* D = createnode('D');
	btnode* E = createnode('E');
	btnode* F = createnode('F');
	btnode* G = createnode('G');
	btnode* H = createnode('H');

	A->left = B;
	A->right = C;
	B->left = D;
	B->right = E;
	E->right = H;
	C->left = F;
	C->right = G;

	char val = 'D';
	btnode* ret = find(val,A);
	if(ret)
	printf("%c\n", ret->val);
}

int main()
{

	test();
	return 0;
}